package com.ff.xyh.consumer.dictionary.service;

import com.ff.xyh.common.entity.dictionary.ComplaintType;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;

import java.util.List;

/**
 * <p>
 * 投诉类型表 服务类
 * </p>
 *
 * @author ff
 * @since 2022-10-26
 */
public interface ComplaintTypeService extends IService<ComplaintType> {
    /**
     * @Cacheable 方法被调用时，若缓存存在，则直接使用缓存内容； 若不存在，则将返回结果放入缓存。 需要明确返回类型
     * @CachePut 方法调用时，不管缓存存不存在，都将返回结果放入缓存。 需要明确返回类型
     * @CacheEvict 方法调用时，将指定缓存清除。 若将 allEntries 设置为 true 则清空所有缓存。(慎用) 不需要指定返回类型
     */
    // cacheNames 和 value 作用差不多 指定缓存在哪一块命名空间 key 用于索引
    @Cacheable(value = "all_complaint_type", unless = "#result == null", key = "0")
    List<ComplaintType> getAllComplaintType();

    // 对投诉类型表进行增删改时， 应该清除原有缓存
    @CacheEvict(value = "all_complaint_type", key = "0" )
    boolean deleteComplaintTypeById( Integer id );

    @CacheEvict(value = "all_complaint_type", key = "0" )
    boolean insertComplaintType( ComplaintType complaintType );

    @CacheEvict(value = "all_complaint_type", key = "0" )
    boolean updateComplaintType (ComplaintType complaintType);

}
